import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Esta es la clase Tercero, el tercer oponente a vencer.
 * @author Miguel Martinez Aguilar
 * @version 04 de abril de 2013
 */
public class Tercero extends Jugador
{
    /**
     * Este es el constructor de Tercero.
     */
    public Tercero()
    {
        super("Morgan");
        numjug = 3;
    }
    
    /**
     * Este metodo busca un espacio libre aleatorio.
     */
    public void tiroAleatorio()
    {
        boolean valido = false;
        super.queProyectil();
        if(buscaEnRegion(0,4,0,9)){
            do{
                fila = Greenfoot.getRandomNumber(5);
                col = Greenfoot.getRandomNumber(10);
                valido = esValido();
            }while(!valido);
        }
        else{
            if(buscaEnRegion(5,9,0,9)){
                do{
                    fila = (Greenfoot.getRandomNumber(5)) + 5;
                    col = Greenfoot.getRandomNumber(10);
                    valido = esValido();
                }while(!valido);
            }
        }
    }
    
    /**
     * Este metodo investiga si existen espacios disponibles en una region dada del tablero. <p>
     * Regresa un boleano que indica si se encontro un espacio disponible para destruir.
     * @param f1: primera fila de la region a evaluar.
     * @param f2: segunda fila de la region a evaluar.
     * @param c1: primera columna de la region a evaluar.
     * @param c2: segunda columna de la region a evaluar.
     */
    public boolean buscaEnRegion(int f1, int f2, int c1, int c2)
    {
        boolean valido = false;
        Espacio x = null;
        for(int f = f1; f <= f2; f++){
            for(int c = c1; c <= c2; c++){
                if((x = tablero.hayEspacio(f,c)) != null)valido = true;
            }
            if(valido)break;
        }
        return valido;
    }
    
    /**
     * Este metodo verifica si un espacio es valido para destruir. <p>
     * Regresa un boleano que indica si un posible espacio es valido.
     */
    public boolean esValido()
    {
        boolean val = false;
        if(evaluaBlanco(fila,col)){
            val = true;
            fila2 = fila;
            col2 = col;
        }
        return val;
    }
}

